Learn in 10 minutes

Learn in 10 minutes

Aprenda MATLAB em 10 Minutos

MATLAB (Matrix Laboratory) e uma linguagem de programacao de alto nivel e um ambiente projetado para computacao numerica, desenvolvimento de algoritmos e visualizacao de dados. Originalmente desenvolvido no final dos anos 1970, o MATLAB se tornou uma ferramenta essencial em engenharia, ciencia e matematica.

Este tutorial cobre os fundamentos do MATLAB e ajuda voce a comecar com este poderoso ambiente de computacao.

1. Seu Primeiro Programa em MATLAB

Crie um arquivo de script chamado hello.m ou digite comandos diretamente na janela de comandos do MATLAB.

disp('Hello, World!')

Ou usando a funcao fprintf:

fprintf('Hello, World!\n')

A saida sera:

Hello, World!

A funcao disp() exibe o conteudo diretamente, enquanto fprintf() oferece mais controle de formatacao, similar ao printf da linguagem C.

2. Sintaxe Basica

O MATLAB tem suas proprias regras de sintaxe que diferem da maioria das linguagens de programacao de proposito geral. Compreender esses conceitos basicos e essencial para escrever codigo limpo e manutenivel.

2.1 Comentarios

Comentarios de linha unica comecam com o sinal de porcentagem %:

% Este e um comentario
x = 10;  % Isso atribui 10 a x

Comentarios de multiplas linhas usam %{ e %}:

%{
Este e um comentario de multiplas linhas.
Ele pode span varias linhas.
%}

2.2 Ponto e Virgula

O ponto e virgula ; suprime a exibicao da saida. Sem ele, o MATLAB exibe o resultado:

x = 5     % Exibe: x = 5
y = 10;   % Sem saida, mas y e atribuido

2.3 Diferenca entre Maiusculas e Minusculas

O MATLAB diferencia maiusculas de minusculas. A e a sao variaveis diferentes:

A = 5;
a = 10;
disp(A)  % Saida: 5
disp(a)  % Saida: 10

2.4 Nomenclatura de Variaveis

Nomes de variaveis devem comecar com uma letra, seguidos de letras, numeros ou underscores:

valid_name = 1;
another_valid_name_123 = 2;
% 123invalid = 3;  % Erro: nao pode comecar com numero

2.5 Operacoes Basicas

O MATLAB e ottimo para operacoes com matrizes. Criar uma matriz e simples:

A = [1 2 3; 4 5 6; 7 8 9]  % matriz 3x3

Saida:

A =

     1     2     3
     4     5     6
     7     8     9

3. Variaveis e Tipos de Dados

O MATLAB usa tipagem dinamica. Variaveis sao criadas quando atribuidas e seu tipo e determinado pelo valor atribuido.

3.1 Tipos Numericos

O MATLAB armazena todos os numeros como ponto flutuante de precisao dupla por padrao:

% Inteiro
int_num = 42;

% Float
float_num = 3.14159;

% Notacao cientifica
sci_num = 2.5e-3;  % 0.0025

3.2 Strings

Variaveis de string usam aspas simples:

str = 'Hello, MATLAB';
str2 = "Hello, MATLAB";  % Array de strings (R2016b+)

Concatenacao de strings:

str1 = 'Hello';
str2 = 'World';
combined = [str1 ', ' str2];  % 'Hello, World'

3.3 Logicos (Boolean)

Valores logicos sao true ou false:

flag = true;
result = false;

% Operacoes logicas
a = true;
b = false;
and_result = a && b;    % false
or_result = a || b;     % true
not_result = ~a;        % false

3.4 Arrays de Caracteres vs Strings

O MATLAB possui tanto arrays de caracteres quanto objetos de string:

% Array de caracteres (estilo antigo)
char_arr = 'Hello';

% Objeto de string (estilo moderno, R2016b+)
str_obj = "Hello";

% Objetos de string sao mais faceis de trabalhar
name = "Alice";
greeting = "Hello, " + name;  % Funciona naturalmente

4. Estruturas de Dados

O MATLAB oferece varias estruturas de dados para diferentes casos de uso.

4.1 Vetores

Um vetor e um array unidimensional:

% Vetor linha
row_vec = [1 2 3 4 5];

% Vetor coluna
col_vec = [1; 2; 3; 4; 5];

% Usando operador dois pontos
range_vec = 1:5;        % [1 2 3 4 5]
step_vec = 0:2:10;      % [0 2 4 6 8 10]

% linspace para valores espacados uniformemente
lin_vec = linspace(0, 10, 5);  % [0 2.5 5 7.5 10]

4.2 Matrizes

As matrizes sao a base do MATLAB:

% Criacao direta de matriz
A = [1 2 3; 4 5 6; 7 8 9];

% Acessando elementos
element = A(2, 3);  % Retorna 6 (linha 2, coluna 3)

% Operacoes com matrizes
B = A';            % Transposta
C = A * B;         % Multiplicacao de matrizes
D = A .* B;        % Multiplicacao elemento a elemento

4.3 Cell Arrays

Cell arrays podem armazenar diferentes tipos de dados:

% Criar um cell array
cell_arr = {1, 'hello', [1 2 3], true};

% Acessar conteudo do cell usando chaves
data = cell_arr{2};  % Retorna 'hello'

% Acessar cell usando parenteses
sub_cell = cell_arr(1:2);  % Retorna {1, 'hello'}

4.4 Estruturas

Estruturas sao como dicionarios com campos nomeados:

% Criar uma estrutura
student.name = 'John';
student.age = 20;
student.major = 'Engineering';

% Acessar campos
disp(student.name);  % Saida: John

% Array de estruturas
students(1).name = 'Alice';
students(1).age = 21;
students(2).name = 'Bob';
students(2).age = 22;

4.5 Tabelas

Tabelas sao adequadas para dados tabulares:

% Criar uma tabela
Age = [25; 30; 35];
Name = {'Alice'; 'Bob'; 'Charlie'};
Salary = [50000; 60000; 70000];

T = table(Name, Age, Salary);

% Acessar dados
disp(T.Age);
disp(T.Name{1});

5. Operadores

O MATLAB oferece varios operadores para operacoes aritmeticas, comparacao e logicas.

5.1 Operadores Aritmeticos

a = 10;
b = 3;

sum = a + b;           % 13
diff = a - b;          % 7
prod = a * b;          % 30
quot = a / b;          % 3.3333
int_div = floor(a/b);  % 3
mod = mod(a, b);       % 1 (resto)
pow = a ^ b;           % 1000

5.2 Operadores Elemento a Elemento

Operadores elemento a elemento trabalham em elementos correspondentes:

A = [1 2 3];
B = [4 5 6];

C = A .* B;  % Elemento a elemento: [4 10 18]
D = A.^2;    % Quadrado elemento a elemento: [1 4 9]

5.3 Operadores de Comparacao

x = 5;
y = 10;

eq = (x == y);    % false
neq = (x ~= y);   % true
gt = (x > y);     % false
lt = (x < y);     % true
ge = (x >= y);    % false
le = (x <= y);    % true

5.4 Operadores Logicos

a = true;
b = false;

and_op = a & b;     % false (AND elemento a elemento)
or_op = a | b;      % true (OR elemento a elemento)
not_op = ~a;        % false
and_short = a && b; % false (AND com curto-circuito)
or_short = a || b;  % true (OR com curto-circuito)

6. Controle de Fluxo

O MATLAB oferece estruturas padrao de controle de fluxo, mas com sintaxe diferente de linguagens como Python.

6.1 if-elseif-else

score = 85;

if score >= 90
    grade = 'A';
elseif score >= 80
    grade = 'B';
elseif score >= 70
    grade = 'C';
else
    grade = 'F';
end

disp(grade)  % Saida: B

6.2 switch

A instrucao switch compara uma unica expressao contra multiplos casos:

day = 'Monday';

switch day
    case {'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'}
        disp('Weekday');
    case {'Saturday', 'Sunday'}
        disp('Weekend');
    otherwise
        disp('Invalid day');
end

6.3 for Loops

O loop for iter sobre um intervalo ou array:

% Iterando sobre um intervalo
for i = 1:5
    disp(i);
end

% Iterando sobre um array
fruits = {'apple', 'banana', 'orange'};
for fruit = fruits
    disp(fruit{1});
end

% Loops aninhados para operacoes com matrizes
A = [1 2; 3 4];
B = zeros(2, 2);
for i = 1:2
    for j = 1:2
        B(i, j) = A(i, j) * 2;
    end
end

6.4 while Loops

count = 0;
while count < 5
    disp(count);
    count = count + 1;
end

6.5 Controle de Loops

A instrucao break sai do loop, e continue pula para a proxima iteracao:

% Usando break
for i = 1:10
    if i == 5
        break;
    end
    disp(i);
end
% Saida: 1 2 3 4

% Usando continue
for i = 1:5
    if mod(i, 2) == 0
        continue;  % Pula numeros pares
    end
    disp(i);
end
% Saida: 1 3 5

7. Entrada e Saida

7.1 Entrada do Usuario

Use a funcao input() para obter entrada do usuario:

% Obter entrada numerica
num = input('Enter a number: ');

% Obter entrada de string
name = input('Enter your name: ', 's');

% Obter entrada de expressao (avalia a entrada)
expr = input('Enter an expression: ');

7.2 Exibindo Saida

Varias funcoes exibem saida:

% disp - exibicao simples
disp('Hello');
disp([1 2 3]);

% fprintf - saida formatada
name = 'Alice';
age = 25;
fprintf('Name: %s, Age: %d\n', name, age);

% sprintf - criar string formatada
str = sprintf('Value: %.2f', 3.14159);
disp(str);

7.3 Especificadores de Formato

Especificadores de formato comuns no MATLAB:

% %s - string
% %d - inteiro
% %f - ponto flutuante
% %.2f - ponto flutuante com 2 casas decimais
% %e - notacao cientifica

fprintf('%d %.2f %e\n', 42, 3.14159, 1000)
% Saida: 42 3.14 1.000000e+03

8. Funcoes

Funcoes no MATLAB sao tipicamente definidas em arquivos separados, mas funcoes anonimas fornecem criacao de funcoes inline.

8.1 Funcoes Anonimas

Funcoes anonimas criam funcoes simples sem arquivos separados:

% Entrada unica
square = @(x) x^2;
disp(square(5));  % Saida: 25

% Multiplas entradas
add = @(x, y) x + y;
disp(add(3, 4));  % Saida: 7

% Multiplas expressoes
hypot = @(x, y) sqrt(x^2 + y^2);
disp(hypot(3, 4));  % Saida: 5

8.2 Arquivos de Funcao

Crie um arquivo chamado myfunc.m:

function y = myfunc(x)
    y = x^2 + 1;
end

Chame a funcao:

result = myfunc(5);  % Saida: 26

8.3 Funcoes com Multiplas Saidas

function [sum, prod] = calc(x, y)
    sum = x + y;
    prod = x * y;
end

Chame com multiplas saidas:

[s, p] = calc(3, 4);
disp(s);  % 7
disp(p);  % 12

8.4 Argumentos Variaveis

Use varargin e varargout para argumentos variaveis:

function result = sum_all(varargin)
    result = 0;
    for i = 1:length(varargin)
        result = result + varargin{i};
    end
end

% Chame com qualquer numero de argumentos
total = sum_all(1, 2, 3, 4, 5);  % Saida: 15

9. Arquivos de Script

Scripts sao arquivos .m que contem uma sequencia de comandos MATLAB. Eles operam sobre dados no espaco de trabalho:

% salvar como myscript.m
% Calcular estatisticas para um conjunto de dados
data = [1 2 3 4 5 6 7 8 9 10];

mean_val = mean(data);
std_val = std(data);
max_val = max(data);
min_val = min(data);

fprintf('Mean: %.2f\n', mean_val);
fprintf('Std: %.2f\n', std_val);
fprintf('Max: %d\n', max_val);
fprintf('Min: %d\n', min_val);

10. Tratamento de Erros

Use try-catch para tratamento de erros:

try
    result = risky_operation();
catch ME
    fprintf('Error: %s\n', ME.message);
    % Tratar o erro
    result = 0;
end

Usando error() para gerar erros:

function result = divide(a, b)
    if b == 0
        error('Division by zero is not allowed');
    end
    result = a / b;
end

11. Operacoes com Arquivos

11.1 Salvando e Carregando Dados

% Salvar variaveis em arquivo
x = [1 2 3];
y = 'hello';
save('data.mat', 'x', 'y');

% Carregar variaveis de arquivo
load('data.mat');

% Salvar em arquivo de texto
writematrix(x, 'data.txt');

% Ler de arquivo de texto
data = readmatrix('data.txt');

11.2 Operacoes com Arquivos de Texto

% Escrever em arquivo de texto
fid = fopen('output.txt', 'w');
fprintf(fid, 'Line 1\n');
fprintf(fid, 'Line 2\n');
fclose(fid);

% Ler de arquivo de texto
fid = fopen('output.txt', 'r');
while ~feof(fid)
    line = fgetl(fid);
    if ischar(line)
        disp(line);
    end
end
fclose(fid);

Usando textscan para leitura estruturada:

fid = fopen('data.txt', 'r');
format = '%s %d %f';
C = textscan(fid, format);
fclose(fid);

name = C{1};
age = C{2};
score = C{3};

12. Graficos

As capacidades de graficos do MATLAB estao entre seus recursos mais fortes.

12.1 Grafico 2D Basico

x = 0:0.1:2*pi;
y = sin(x);

plot(x, y);
xlabel('x');
ylabel('sin(x)');
title('Sine Wave');
grid on;

12.2 Multiplos Graficos

x = 0:0.1:2*pi;

% Subplots
subplot(2, 1, 1);
plot(x, sin(x));
title('Sine');

subplot(2, 1, 2);
plot(x, cos(x));
title('Cosine');

12.3 Personalizacao de Graficos

x = 0:0.1:10;
y1 = x;
y2 = x.^2;

plot(x, y1, 'b-', 'LineWidth', 2);  % Linha solida azul
hold on;
plot(x, y2, 'r--', 'LineWidth', 2); % Linha tracejada vermelha
hold off;

xlabel('X');
ylabel('Y');
legend('Linear', 'Quadratic');
title('Linear vs Quadratic');
grid on;

12.4 Outros Tipos de Graficos

% Grafico de barras
bar([1 2 3 4], [10 20 15 25]);

% Histograma
data = randn(1000, 1);
histogram(data, 30);

% Grafico de dispersao
x = rand(100, 1);
y = 2*x + randn(100, 1)*0.1;
scatter(x, y);